#ifndef IEC104APCI_H
#define IEC104APCI_H

#include <QByteArray>

// U帧 传输未编号的控制命令功能 ， S 帧传输对站端的确认报文(编号的监视)， I帧传输信体(包含ASDU)
// 发送方每发送一个报文，发送序号加1， 接收方每收到一个和接受序号相等的报文接受序号加一
struct SF_APCI{
    QByteArray m_start = "68";
    QByteArray m_lenL = "04";          //报文长度 len = 4 + ASDU长度
    QByteArray m_lenH = "00";          //长度低字节
    QByteArray m_ctrl0 = "00";         // 第一个控制域的最低比特位=0 定义 I 帧格式          发送序列号LSB  8位位组 ,控制域1 = TxCounter & 0xFE
    QByteArray m_ctrl1 = "00";         // 发送序列号 MSB, 控制域2 = (TxCounter >> 8) & 0xFF
    QByteArray m_ctrl2 = "00";         // 接收序列号 LSB        最低位=0, 控制域3 = RxCounter & 0xFE
    QByteArray m_ctrl3 = "00";         // 接收序列号 MSB, 控制域4 = (RxCounter >> 8) & 0xFF
};


class IEC104APCI
{
public:
    IEC104APCI();

    QByteArray getApci();   // 获取当前apci

private:
    int m_sendCounter = 0;    // 发送序号从0开始
    int m_recvCounter = 0;
    SF_APCI m_apci;         // APCI
};

#endif // IEC104APCI_H
